package com.huangkailong.leetcode;

/**
 * 给你一个 32 位的有符号整数 x ，返回将 x 中的数字部分反转后的结果。<br/>
 * 如果反转后整数超过 32 位的有符号整数的范围[−231, 231− 1] ，就返回 0。<br/>
 * 假设环境不允许存储 64 位整数（有符号或无符号）。<br/>
 * 
 *
 * 示例 1：<br/>
 * 输入：x = 123<br/>
 * 输出：321<br/>
 *
 * 示例 2：<br/>
 * 输入：x = -123<br/>
 * 输出：-321<br/>
 *
 * 示例 3：<br/>
 * 输入：x = 120<br/>
 * 输出：21<br/>
 *
 * 示例 4：<br/>
 * 输入：x = 0<br/>
 * 输出：0<br/>
 *
 * @author huangkl
 * @since 1.0.0
 */
public class IntegerReverse {

    public static int solution1(int x){
        int result = 0;

        int max = Integer.MAX_VALUE/10;
        int min = Integer.MIN_VALUE/10;
        while (x != 0){
            int digit = x % 10;
            // 溢出判断，参考：https://leetcode-cn.com/problems/reverse-integer/solution/zheng-shu-fan-zhuan-by-leetcode-solution-bccn/
            if(result > max || result < min){
                return 0;
            }
            result = result*10 + digit;
            x /= 10;
        }
        return result;
    }
}
